/**
 *
 */
package quartz;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import quartz.job.HelloJobDemo;

import java.text.SimpleDateFormat;
import java.util.Date;

public class test3 {
    public static void main(String[] args) throws SchedulerException, InterruptedException {
        StdSchedulerFactory stdFactory = new StdSchedulerFactory();// 第二种方式获取scheduler对象
        Scheduler scheduler = stdFactory.getScheduler();
        JobDetail jobDetail = JobBuilder.newJob(HelloJobDemo.class)// 加载任务类，与hellojob完成绑定
                .withIdentity("job1", "group1")// 参数1：任务的唯一实例，参数2:任务组的名称
                .build();
//        SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule();
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")// 参数1：触发器的唯一实例，参数2：触发器务组的名称
                .withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))// 每秒钟执行
                .build();
        Date date = scheduler.scheduleJob(jobDetail, trigger);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("任务调度开始的时间：    " + dateFormat.format(date));
        scheduler.start();
        // scheduler执行2秒后挂起
        Thread.sleep(2000L);
        scheduler.standby();
        // 挂起5秒后重新启动任务
        Thread.sleep(5000L);
        scheduler.start();

        // 关闭scheduler，关闭后无法再唤醒
        Thread.sleep(10000L);
        /**
         * shutdown(true):表示等待所有正在执行的job执行完毕之后，再关闭scheduler
         * shutdown(false):表示直接关闭scheduler
         */
        scheduler.shutdown();
    }
}
